package cn.bdqn.mh.controller;

import cn.bdqn.mh.config.MvcConfigurer;
import cn.bdqn.mh.pojo.Book;
import cn.bdqn.mh.response.Result;
import cn.bdqn.mh.utils.FileUploadUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

/**
 * 创建人:  zhang
 * 创建日期: 2020/7/17 09:25
 */
@RestController
@RequestMapping("/test")
@Slf4j
public class TestController {
    @GetMapping("/test1")
    public String test1(){
        return "hello world";
    }
    @Autowired
    private MvcConfigurer mvcConfigurer;//配置类
    //演示文件上传
    @PostMapping("/test2")
    public String test2(
            @RequestParam("file") MultipartFile file, Book book){
        log.info("图书信息:"+book.toString());
        if(file.isEmpty()==false){
            //上传文件了
            String filename=file.getOriginalFilename();//获取上传的文件名
            log.info("你上传的原文件名:"+filename);
            log.info("文件大小为:"+file.getSize());
            String path=mvcConfigurer.getUploadpath();//获取要真正保存的物理路径
            //获取随机文件名
            filename= FileUploadUtils.getUUIDFileName(filename);
            log.info("要保存的文件名："+filename);
            try {
                FileUploadUtils.uploadFile(file.getBytes(),path,filename);//调用工具方法保存
                log.info("文件名保存成功!!!");
                String webpath="/static/upload/"+filename;
                return webpath;
            }catch (Exception ex){
                ex.printStackTrace();
                return "错误："+ex.getMessage();
            }
        }else{
            return "没有文件上传";
        }


    }

    @PostMapping("/test3")
    public Object test3(
            @RequestParam("formFile") MultipartFile file){
        Result result=new Result();//响应格式
        if(file.isEmpty()==false){
            //上传文件了
            String filename=file.getOriginalFilename();//获取上传的文件名
            log.info("你上传的原文件名:"+filename);
            log.info("文件大小为:"+file.getSize());
            String path=mvcConfigurer.getUploadpath();//获取要真正保存的物理路径
            //获取随机文件名
            filename= FileUploadUtils.getUUIDFileName(filename);
            //打散保存D:/ideaprjs/microhouse/uploadfiles/ yml配置存放路径
            //   /11/10 后面这个就是makepath的功能
            path=FileUploadUtils.makePath(filename,path);
            log.info("真正保存的路径："+path);
            log.info("要保存的文件名："+filename);
            try {
                FileUploadUtils.uploadFile(file.getBytes(),path,filename);//调用工具方法保存
                log.info("文件名保存成功!!!");
                //D:/ideaprjs/microhouse/uploadfiles/11/10/
                //那么需要截取字符串获取 11/10/
                int index=path.lastIndexOf("uploadfiles");
                String str=path.substring(index+12);//str= 11/10/
                String webpath="upload/"+str+filename;
                result.setCode(0);//成功
                result.setData(webpath);//成功返回路径
            }catch (Exception ex){
                ex.printStackTrace();
                result.setCode(-1);//失败
                result.setMessage("保存文件失败");
                //return "错误："+ex.getMessage();
            }
        }else{
            //return "没有文件上传";
            result.setCode(-2);//失败
            result.setMessage("没有上传文件");
        }
        return result;


    }
    @GetMapping("/test4")
    public String test4(){
        return "你好@@@";
    }
}
